part of '../repository.dart';

sealed class SigningUpFailure {}

class AlreadyExistingUserSigningUpFailure extends Equatable implements SigningUpFailure {
  const AlreadyExistingUserSigningUpFailure();

  @override
  List<Object?> get props => [];
}

class EmailVerificationSigningUpFailure extends Equatable implements SigningUpFailure {
  const EmailVerificationSigningUpFailure({
    required this.emailVerificationCodeFound,
    this.emailVerificationCodeCorrect,
    this.emailVerificationCodeExpired,
    this.emailVerificationCodeSubmissionAttemptsOver,
  });

  final bool emailVerificationCodeFound;
  final bool? emailVerificationCodeCorrect;
  final bool? emailVerificationCodeExpired;
  final bool? emailVerificationCodeSubmissionAttemptsOver;

  @override
  List<Object?> get props {
    return [
      emailVerificationCodeFound,
      emailVerificationCodeCorrect,
      emailVerificationCodeExpired,
      emailVerificationCodeSubmissionAttemptsOver,
    ];
  }
}

class ServerSigningUpFailure extends Equatable implements SigningUpFailure {
  const ServerSigningUpFailure();

  @override
  List<Object?> get props => [];
}

class NetworkSigningUpFailure extends Equatable implements SigningUpFailure {
  const NetworkSigningUpFailure();

  @override
  List<Object?> get props => [];
}
